<!DOCTYPE html>
<!--
     SPDX-License-Identifier: CC-BY-SA-4.0
     SPDX-FileCopyrightText: 2020 seL4 Project a Series of LF Projects, LLC.
-->
<!-- Page last generated 2025-02-20 03:16:15 +0000 -->
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Configuring and building an seL4 project | seL4 docs</title>

    <!-- Our stylesheet and theme stylesheet.  Contains bootstrap. -->
    <link rel="stylesheet" href="/assets/css/style.css" type="text/css">
    <!-- Font awesome -->
    <link href="https://use.fontawesome.com/releases/v5.0.8/css/all.css" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet">
    <!-- Pygments syntax highlighting  -->
    <link rel="stylesheet" href="/assets/css/highlighting/trac.css" type="text/css">
    <link rel="icon" type="image/x-icon" href="/assets/favicon.ico"><script defer data-domain="docs.sel4.systems"
	    src="https://analytics.sel4.systems/js/script.js"></script></head>

  <body class="container-fluid">

    



<header>
  <ul class="row menu">
    <li class="col-xs-12 col-md-2" >
            <a href="https://sel4.systems" class="skip-icon">
              <img class="img-responsive" src="/assets/logo-text-white.svg" alt="seL4 logo" />
            </a>
    </li>
    <li class="col-xs-12 col-md-10 menu">
      <nav aria-label="Banner links">
        <h2><a href="/Resources" />Resources</h2>
        <h2><a href="/processes" />Contributing</a></h2>
        <h2><a href="/projects" />Projects</h2>
        <h2><a href="/Tutorials" />Tutorials</h2>
        <iframe title="DuckDuckGo search bar" src="https://duckduckgo.com/search.html?site=docs.sel4.systems&prefill=Search%20sel4.systems" style="overflow:hidden;margin-bottom:10px; padding:0;height:40px;float:right;border-width: 0px"></iframe>
      </nav>
    </li>
  </ul>
  <div class="clear"></div>
  
<div class="breadcrumbs bootstrap hidden-sm-down">
  <nav class="sel-breadcrumb" aria-label="Breadcrumb" >
    <ol class=" list-unstyled" vocab="http://schema.org/" typeof="BreadcrumbList">
      
      
        

        

        <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <a property="item" typeof="WebPage" href="/">
              <span property="name"><b>seL4 Docs</b></span>
            </a>
            <meta property="position" content="1" />
        </li>
      
        

        

        <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <a property="item" typeof="WebPage" href="/projects/">
              <span property="name"><b>Projects</b></span>
            </a>
            <meta property="position" content="2" />
        </li>
      
        

        

        <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <a property="item" typeof="WebPage" href="/projects/buildsystem/">
              <span property="name"><b>System configuration and building</b></span>
            </a>
            <meta property="position" content="3" />
        </li>
      
        

        
          <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <span property="name">Configuring and building an seL4 project</span>
            <meta property="position" content="4" /></li>
          
    </ol>
  </nav>
  <nav class="sel-version" aria-label="Current Versions">
    <ol class="list-unstyled">
      <li class="list-unstyled text-right" style="margin-left:auto; padding:0rem 0rem;">
        Current versions:</li>
      <li class="list-unstyled text-right">
      <a href="/releases/sel4/13.0.0"><b>seL4-13.0.0</b></a></li>
      <li class="list-unstyled text-right">
      <a href="/releases/microkit/1.4.1"><b>microkit-1.4.1</b></a></li>
      <li class="list-unstyled text-right">
      <a href="/releases/camkes/camkes-3.11.0"><b>camkes-3.11.0</b></a></li>
      <li class="list-unstyled text-right">
      <a href="/releases/capdl/0.3.0"><b>capDL-0.3.0</b></a></li>
      </ol>
  </nav>
  <div class='clear'></div>
</div>


</header>

    <main>
      <div class="row">
  <div class="hidden-xs col-sm-4 col-md-3 col-lg-2">
    


<div class="sidebar">















    <ul class="nav nav-sidebar">
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4/">seL4</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/l4v/">L4.verified</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/camkes/">CAmkES</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/capdl/">CapDL</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/elfloader/">Elfloader</a>
        </li>
  
    
    

    
        <li class="active">
            <a class="" href="/projects/buildsystem/">seL4 Buildsystem</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/user_libs/">user_libs</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4runtime/">The seL4 run-time</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4webserver/">seL4webserver</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4-tutorials/">seL4 tutorials</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4bench/">sel4bench</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4test/">seL4Test</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/virtualization/">Virtualization</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/camkes-vm/">camkes-vm</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/dockerfiles/">Dockerfiles</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/docsite/">seL4 Documentation website</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4_tools/">seL4_tools</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/microkit/">Microkit</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/hardware_hacks/">Hardware Hacks</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/rust/">Rust</a>
        </li>
  
    </ul>


</div>

  </div>
  <div class="content col-sm-8 col-md-6 col-lg-7 main">
    <h1 id="configuring-and-building-an-sel4-project">Configuring and building an seL4 project</h1>

<!--excerpt-->

<p>This page contains documentation for how to interact with and build a project that is using this build system.
For new project development, see <a href="/Developing/Building/Incorporating">incorporating the build system</a>.</p>

<!--excerpt-->

<h4 id="basic-build-initialisation">Basic build initialisation</h4>

<p>In the root directory of a seL4-based project, first create a separate build
directory for the output binaries, then initialize CMake:</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">mkdir </span>build
<span class="nb">cd </span>build
cmake <span class="nt">-DCROSS_COMPILER_PREFIX</span><span class="o">=</span>arm-linux-gnueabi- <span class="nt">-DCMAKE_TOOLCHAIN_FILE</span><span class="o">=</span>../kernel/gcc.cmake &lt;OTHER_COMMAND_LINE_OPTIONS_HERE&gt; <span class="nt">-G</span> Ninja ..
</code></pre></div></div>

<p>We now break down each component in the above invocation:</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">-D</code> defines a variable, in the form <code class="language-plaintext highlighter-rouge">X=Y</code>.</li>
  <li><code class="language-plaintext highlighter-rouge">CROSS_COMPILER_PREFIX</code> specifies the toolchain for cross-compilation, which cannot be changed after
 build directory initialisation. For further details, please see “Cross Compiling”
 below.</li>
  <li><code class="language-plaintext highlighter-rouge">CMAKE_TOOLCHAIN_FILE</code> which indicates that CMake should load the specified file as a
‘toolchain’ file. A toolchain file is able to set up the C compiler, linker etc., for building the project.
 In the example we assume a typical project layout, where seL4 is in the ‘kernel’ directory, at the top level.
 The <a href="https://github.com/seL4/seL4/blob/master/gcc.cmake">gcc.cmake</a>’ file from the seL4 repository sets
  up C compilers and linkers using the <code class="language-plaintext highlighter-rouge">CROSS_COMPILER_PREFIX</code>.</li>
  <li><code class="language-plaintext highlighter-rouge">-G Ninja</code> tells CMake to generate Ninja build scripts as opposed to GNU Makefiles. Only Ninja scripts are supported by parts of the kernel.</li>
  <li><code class="language-plaintext highlighter-rouge">..</code> is the path to the top-level <code class="language-plaintext highlighter-rouge">CMakeLists.txt</code> file describing this project, which in this
case is placed in the root directory of the project.</li>
</ul>

<p>We also provide a shorthand wrapping script which abstracts the above into a shorter command:</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>../init-build <span class="nt">-DCROSS_COMPILER_PREFIX</span><span class="o">=</span>arm-linux-gnueabi- &lt;COMMAND_LINE_OPTIONS_HERE&gt;
</code></pre></div></div>

<p>After configuration, you can build the project by invoking ninja:</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ninja
</code></pre></div></div>

<p>After the build has completed, the resulting binaries will be in the <code class="language-plaintext highlighter-rouge">images/</code> subdirectory.</p>

<h3 id="configuration">Configuration</h3>

<h4 id="types-of-options">Types of Options</h4>

<p>CMake has two types of configuration options:</p>

<ul>
  <li><em>Boolean options</em>, which are are either <code class="language-plaintext highlighter-rouge">ON</code> or <code class="language-plaintext highlighter-rouge">OFF</code>,</li>
  <li><em>String options</em>, which can be set to any value, subject to restrictions set by the project authors.</li>
</ul>

<p>String options can have ‘hints’, which specify can one of several fixed values.
CMake configuration editors respect these and provide a radio selection.</p>

<h4 id="selecting-options">Selecting Options</h4>

<p>Many projects have some degree of customisation available via configuration options. Once the build directory is initialised,
you can use the following approaches to bring up a user-interface for option configuration:</p>

<ul>
  <li>A <code class="language-plaintext highlighter-rouge">ncurses</code> based configuration:</li>
</ul>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ccmake <span class="nb">.</span>
</code></pre></div></div>

<ul>
  <li>Graphical configuration:</li>
</ul>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cmake-gui <span class="nb">.</span>
</code></pre></div></div>

<p>In both cases the path <code class="language-plaintext highlighter-rouge">.</code> should resolve to the same directory used in the build configuration.</p>

<h4 id="changing-option-values">Changing option values</h4>

<p>Any changes to configuration options will not be reflected in the user interface unless explicitly
requested by using <code class="language-plaintext highlighter-rouge">(c)onfigure</code>, which may result in changes to the options available.
For example if option <code class="language-plaintext highlighter-rouge">A</code> depends on boolean option <code class="language-plaintext highlighter-rouge">B</code>, <code class="language-plaintext highlighter-rouge">A</code> will not show up until <code class="language-plaintext highlighter-rouge">B</code> is enabled and
<code class="language-plaintext highlighter-rouge">(c)onfigure</code> is used to reprocess the CMake files.</p>

<p>To exit the configuration interface, use <code class="language-plaintext highlighter-rouge">(g)enerate and exit</code> or <code class="language-plaintext highlighter-rouge">(q)uit without generation</code>. CMake
will not permit generation if the configuration is incomplete (<code class="language-plaintext highlighter-rouge">(c)onfigure</code> must be run and all
options set).</p>

<p>To rebuild after changing configuration options, invoke ninja:</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ninja
</code></pre></div></div>

<h4 id="initial-configuration">Initial configuration:</h4>

<p>Many of our projects support multiple configurations, where the following broad
approaches are used to present simple options to the user:</p>

<ul>
  <li><strong>CMake cache scripts</strong>: These files can assign initial values to any number of configuration
variables. By combining one or more of these together you
can configure an entire system.</li>
  <li><strong>Meta configuration options</strong>:  Meta configuration options are normally
passed as initial <code class="language-plaintext highlighter-rouge">-DVAR=FOO</code> command line arguments to CMake and will be
programatically inspected by projects’ CMake scripts to (re)configure the
system.</li>
</ul>

<h5 id="cmake-cache-scripts">CMake cache scripts:</h5>

<p>CMake cache scripts provide subsets of preconfigured options, which allow the user of a project to
avoid manually setting each option. Cache scripts have the file extension <code class="language-plaintext highlighter-rouge">.cmake</code>.</p>

<p>Projects may provide cache script files which each contain the cache
settings necessary to configure a single feature or option. By combining
multiple <code class="language-plaintext highlighter-rouge">.cmake</code> files, a project can be initialised in a specific way.
Cache script configurations are provided
by passing <code class="language-plaintext highlighter-rouge">-C &lt;file&gt;</code> to <code class="language-plaintext highlighter-rouge">cmake</code> when initialising the build directory. 
For example, given a typical project structure,
one might invoke <code class="language-plaintext highlighter-rouge">cmake</code> or <code class="language-plaintext highlighter-rouge">init-build.sh</code> with several of
cache scripts as arguments.</p>

<p>Multiple cached scripts can be specified on the command line, although if the same option is set twice
only one value is used. Consider an example with several cache scripts for setting the architecture
details (<code class="language-plaintext highlighter-rouge">arm.cmake</code>, <code class="language-plaintext highlighter-rouge">x86.cmake</code>) and for setting build options (<code class="language-plaintext highlighter-rouge">debug.cmake</code>, <code class="language-plaintext highlighter-rouge">release.cmake</code>).
The intended usage is that one architectural cache file is used, and one build options file, as
demonstrated below:</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cmake <span class="nt">-C</span>../projects/awesome_project/configs/arm.cmake <span class="nt">-C</span>../projects/awesome_project/configs/debug.cmake <span class="nt">-DCROSS_COMPILER_PREFIX</span><span class="o">=</span>arm-linux-gnueabi- <span class="nt">-DCMAKE_TOOLCHAIN_FILE</span><span class="o">=</span>../kernel/gcc.cmake <span class="nt">-G</span> Ninja ..
</code></pre></div></div>

<p>While nothing prevents the usage of both <code class="language-plaintext highlighter-rouge">arm.cmake</code> and <code class="language-plaintext highlighter-rouge">x86.cmake</code> at the same time, this does not
make sense, and only one value for each option will be used.  For projects with multiple cache scripts,
check which can be used together.</p>

<h5 id="meta-configuration-options">Meta configuration options:</h5>

<p>Some seL4  projects provide top-level variables which, used across projects, have the same behaviour.
These options are as follows:</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">-DPLATFORM=&lt;YOUR_PREFERENCE&gt;</code>: Selects the target system for the resulting
binaries. Valid values for this variable are the first value (preceding the
semicolon) on each line of the <code class="language-plaintext highlighter-rouge">config_choice</code> directive for each
architecture:
    <ul>
      <li>For ARM: <a href="https://github.com/seL4/seL4/blob/master/src/arch/arm/config.cmake#L21">List in source</a>.</li>
      <li>For X86: <a href="https://github.com/seL4/seL4/blob/master/src/arch/x86/config.cmake#L15">List in source</a>.</li>
      <li>For RISC-V: <a href="https://github.com/seL4/seL4/blob/master/src/arch/riscv/config.cmake#L15">List in source</a>.</li>
    </ul>
  </li>
  <li><code class="language-plaintext highlighter-rouge">-DRELEASE</code>: Set to <code class="language-plaintext highlighter-rouge">0</code> or <code class="language-plaintext highlighter-rouge">1</code>: Turning this off compiles a debug build.
Turning it on compiles the project without debugging features enabled.</li>
  <li><code class="language-plaintext highlighter-rouge">-DVERIFICATION</code>: Set to <code class="language-plaintext highlighter-rouge">0</code> or <code class="language-plaintext highlighter-rouge">1</code>: This is used to generate the version of
the seL4 kernel source which is <strong>VERIFIABLE</strong>. This does not produce a binary
for the <strong>verified</strong> kernel platform.</li>
  <li><code class="language-plaintext highlighter-rouge">-DSMP</code>: Set to <code class="language-plaintext highlighter-rouge">0</code> or <code class="language-plaintext highlighter-rouge">1</code>: Turns SMP (symmetric multiprocessing) support on or
off. By default it will enable support for up to 4 processors. To explicitly
set the maximum number of supported CPUs, try setting
<code class="language-plaintext highlighter-rouge">-DKernelMaxNumNodes=&lt;YOUR_PREFERENCE&gt;</code>.</li>
  <li><code class="language-plaintext highlighter-rouge">-DSIMULATION</code>: Set to <code class="language-plaintext highlighter-rouge">0</code> or <code class="language-plaintext highlighter-rouge">1</code>: This produces a build of the project which
 is suited for running in an emulator such as QEMU.</li>
</ul>

<p>Both the <a href="/seL4Test">seL4test</a> and <a href="https://github.com/seL4/sel4bench-manifest">seL4bench</a> projects follow this form.</p>

<h4 id="sel4test-example"><a href="https://github.com/seL4/sel4test">sel4test</a> example:</h4>

<p>For more information on configuring, building and running the sel4test suite, please see the <a href="../../seL4Test">main page on seL4test</a>.</p>

<h3 id="cross-compiling">Cross compiling:</h3>

<p><a href="https://en.wikipedia.org/wiki/Cross_compiler">Cross compilation</a> refers to compiling a program
for a target machine which is different from the machine you are using to compile the program.</p>

<p>Generally, in order to cross-compile, a separate compiler is required which
specifically targets the foreign machine.</p>

<h4 id="for-arm-based-targets">For ARM-based targets:</h4>

<p>You can use the following command line options when when cross-compiling for an ARM-based machine:</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">-DAARCH32=TRUE</code>: Tells the build system that you are building for a 32-bit
ARM target. This will cause the build system to assume that you have a
cross compiler installed which targets a system with the triplet name
<code class="language-plaintext highlighter-rouge">arm-linux-gnueabi-</code>.</li>
  <li><code class="language-plaintext highlighter-rouge">-DAARCH32HF=TRUE</code>: Tells the build system you’re building for a 32-bit ARM
target which has hardware floating point support. Assumes you have a cross-
compiler installed which targets <code class="language-plaintext highlighter-rouge">arm-linux-gnueabihf-</code>.</li>
  <li><code class="language-plaintext highlighter-rouge">-DAARCH64=TRUE</code>: Tells the build system you’re building for a 64-bit ARM
target. Assumes you have a cross-compiler installed which targets
<code class="language-plaintext highlighter-rouge">aarch64-linux-gnu-</code>.</li>
</ul>

<p>Another option is to explicitly specify the toolchain through <code class="language-plaintext highlighter-rouge">-DCROSS_COMPILER_PREFIX</code>,
which can be used to set the prefix of the
cross-compiler to use.</p>

<h4 id="for-risc-v-based-targets">For RISC-V based targets:</h4>

<p>You can use the following options when cross compiling for a RISC-V target:</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">-DRISCV32=TRUE</code>: Tells the build system that you are building for a 32-bit RISC-V
target. This will cause the build system to assume that you have a cross-
compiler installed which targets a system with the triplet name
<code class="language-plaintext highlighter-rouge">riscv32-unknown-elf-</code>.</li>
  <li><code class="language-plaintext highlighter-rouge">-DRISCV64=TRUE</code>: Tells the build system you’re building for a 64-bit RISC-V
target. Assumes you have a cross-compiler installed which targets
<code class="language-plaintext highlighter-rouge">riscv64-unknown-elf-</code>.</li>
</ul>

<p>Like ARM, you can explicitly specify the toolchain through <code class="language-plaintext highlighter-rouge">-DCROSS_COMPILER_PREFIX</code>,
which can be used to set the prefix of the
cross-compiler to use.</p>

<h4 id="cmake_build_type">CMAKE_BUILD_TYPE</h4>

<p>The <code class="language-plaintext highlighter-rouge">CMAKE_BUILD_TYPE</code> option appears in CMake configuration editors and allows users to configure
that build type (release, debug etc.). Note that this option is not respected by the seL4 kernel.</p>

<h3 id="building-with-clang">Building with Clang</h3>

<p>The kernel as well as, some other projects, can be built using the <a href="https://clang.llvm.org/">clang</a> compiler. To select this configuration,
the <code class="language-plaintext highlighter-rouge">-DTRIPLE</code> variable must be set in the initial configuration step i.e pass in as an argument to the <code class="language-plaintext highlighter-rouge">init-build</code> script.</p>

<p>The value of the <code class="language-plaintext highlighter-rouge">TRIPLE</code> should be the <a href="https://releases.llvm.org/8.0.0/tools/clang/docs/CrossCompilation.html#target-triple">target</a> for which you are compiling.</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>../init-build <span class="nt">-DTRIPLE</span><span class="o">=</span>x86_64-linux-gnu &lt;COMMAND_LINE_OPTIONS_HERE&gt;
</code></pre></div></div>
<p>The <code class="language-plaintext highlighter-rouge">CROSS_COMPILER_PREFIX</code> argument is unnecessary and ignored when compiling with clang. When building for arm based targets, the target <code class="language-plaintext highlighter-rouge">TRIPLE</code> will be equal
to the <code class="language-plaintext highlighter-rouge">CROSS_COMPILER_PREFIX</code> (when using gcc) without the trailing ‘-‘.</p>

<p>Using clang to compile for RISC-V based targets is currently not supported.</p>

  </div>







  
  
<div class="sidebar-toc hidden-xs hidden-sm col-md-3 col-lg-3">
  
    <ul class="section-nav">
    	<h2> seL4 Buildsystem </h2> 
        <li>
          
          <a style="" class="" href="/projects/buildsystem/">
            Documentation homepage
          </a>
        </li>

















    
        <h3>Repositories</h3>
    
        <li>
          <a class="" href="https://github.com/sel4/sel4">
            sel4
          </a>
        </li>

    
        <li>
          <a class="" href="https://github.com/sel4/sel4_tools">
            sel4_tools
          </a>
        </li>









  







    
        <h3>Recent Updates</h3>
    
        <li>
          <a style="" href="/updates/buildsystem/11.0.x.html">
            seL4 11.0.x-compatible
          </a>
        </li>

    </ul>

</div>


</div>

    </main>
    


<footer class="site-footer">

  <h2 class="footer-heading">seL4 docs</h2>

  <div class="footer-col-wrapper">

    <div class="col-md-2">
      



<ul class="social-media-list">
  <li><a href="https://github.com/sel4"><i class="fab fa-github"></i> <span class="username">sel4</span></a></li><li><a href="https://github.com/sel4proj"><i class="fab fa-github"></i> <span class="username">sel4proj</span></a></li>
</ul>

    </div>

    <div class="col-md-8">
      <ul class="list-unstyled">
        <li>
          This site is for displaying seL4 related documentation.  Pull requests are welcome.
        </li>
        
          <li>
            Site last updated: Fri Feb 7 10:17:38 2025 +1100 ee78c8857c
          </li>
          <li>
                Page last updated: Mon Nov 30 09:25:37 2020 +1100 977ed44f17
          </li>
        
      </ul>
    </div>
    <div class="col-md-2">
<a href="https://github.com/seL4/docs/blob/master/projects/buildsystem/using.md">View page on GitHub</a>
      <br />
      <a href="https://github.com/seL4/docs/edit/master/projects/buildsystem/using.md">Edit page on GitHub</a>
      <br />
      <a href="/sitemap">Sitemap</a>
    </div>

  </div>

</footer>

  </body>
</html>
